home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 2002 November / SGI Freeware 2002 November - Disc 1.iso / dist / fw_cvs.idb / usr / freeware / info / cvs.info-7.z / cvs.info-7
Text File  |  2002-01-08  |  49KB  |  1,503 lines

  1. This is cvs.info, produced by makeinfo version 4.0 from cvs.texinfo.
  2.  
  3. START-INFO-DIR-ENTRY
  4. * CVS: (cvs).          Concurrent Versions System
  5. END-INFO-DIR-ENTRY
  6.  
  7.    Copyright (C) 1992, 1993 Signum Support AB Copyright (C) 1993, 1994
  8. Free Software Foundation, Inc.
  9.  
  10.    Permission is granted to make and distribute verbatim copies of this
  11. manual provided the copyright notice and this permission notice are
  12. preserved on all copies.
  13.  
  14.    Permission is granted to copy and distribute modified versions of
  15. this manual under the conditions for verbatim copying, provided also
  16. that the entire resulting derived work is distributed under the terms
  17. of a permission notice identical to this one.
  18.  
  19.    Permission is granted to copy and distribute translations of this
  20. manual into another language, under the above conditions for modified
  21. versions, except that this permission notice may be stated in a
  22. translation approved by the Free Software Foundation.
  23.  
  24. 
  25. File: cvs.info,  Node: Invoking CVS,  Next: Administrative files,  Prev: CVS commands,  Up: Top
  26.  
  27. Quick reference to CVS commands
  28. *******************************
  29.  
  30.    This appendix describes how to invoke CVS, with references to where
  31. each command or feature is described in detail.  For other references
  32. run the `cvs --help' command, or see *Note Index::.
  33.  
  34.    A CVS command looks like:
  35.  
  36.      cvs [ GLOBAL_OPTIONS ] COMMAND [ COMMAND_OPTIONS ] [ COMMAND_ARGS ]
  37.  
  38.    Global options:
  39.  
  40. `--allow-root=ROOTDIR'
  41.      Specify legal CVSROOT directory (server only) (not in CVS 1.9 and
  42.      older).  See *Note Password authentication server::.
  43.  
  44. `-a'
  45.      Authenticate all communication (client only) (not in CVS 1.9 and
  46.      older).  See *Note Global options::.
  47.  
  48. `-b'
  49.      Specify RCS location (CVS 1.9 and older).  See *Note Global
  50.      options::.
  51.  
  52. `-d ROOT'
  53.      Specify the CVSROOT.  See *Note Repository::.
  54.  
  55. `-e EDITOR'
  56.      Edit messages with EDITOR.  See *Note Committing your changes::.
  57.  
  58. `-f'
  59.      Do not read the `~/.cvsrc' file.  See *Note Global options::.
  60.  
  61. `-H'
  62. `--help'
  63.      Print a help message.  See *Note Global options::.
  64.  
  65. `-l'
  66.      Do not log in `$CVSROOT/CVSROOT/history' file.  See *Note Global
  67.      options::.
  68.  
  69. `-n'
  70.      Do not change any files.  See *Note Global options::.
  71.  
  72. `-Q'
  73.      Be really quiet.  See *Note Global options::.
  74.  
  75. `-q'
  76.      Be somewhat quiet.  See *Note Global options::.
  77.  
  78. `-r'
  79.      Make new working files read-only.  See *Note Global options::.
  80.  
  81. `-s VARIABLE=VALUE'
  82.      Set a user variable.  See *Note Variables::.
  83.  
  84. `-T TEMPDIR'
  85.      Put temporary files in TEMPDIR.  See *Note Global options::.
  86.  
  87. `-t'
  88.      Trace CVS execution.  See *Note Global options::.
  89.  
  90. `-v'
  91.  
  92. `--version'
  93.      Display version and copyright information for CVS.
  94.  
  95. `-w'
  96.      Make new working files read-write.  See *Note Global options::.
  97.  
  98. `-x'
  99.      Encrypt all communication (client only).  See *Note Global
  100.      options::.
  101.  
  102. `-z GZIP-LEVEL'
  103.      Set the compression level (client only).  See *Note Global
  104.      options::.
  105.  
  106.    Keyword expansion modes (*note Substitution modes::):
  107.  
  108.      -kkv  $Id: file1,v 1.1 1993/12/09 03:21:13 joe Exp $
  109.      -kkvl $Id: file1,v 1.1 1993/12/09 03:21:13 joe Exp harry $
  110.      -kk   $Id$
  111.      -kv   file1,v 1.1 1993/12/09 03:21:13 joe Exp
  112.      -ko   no expansion
  113.      -kb   no expansion, file is binary
  114.  
  115.    Keywords (*note Keyword list::):
  116.  
  117.      $Author: joe $
  118.      $Date: 1993/12/09 03:21:13 $
  119.      $Header: /home/files/file1,v 1.1 1993/12/09 03:21:13 joe Exp harry $
  120.      $Id: file1,v 1.1 1993/12/09 03:21:13 joe Exp harry $
  121.      $Locker: harry $
  122.      $Name: snapshot_1_14 $
  123.      $RCSfile: file1,v $
  124.      $Revision: 1.1 $
  125.      $Source: /home/files/file1,v $
  126.      $State: Exp $
  127.      $Log: file1,v $
  128.      Revision 1.1  1993/12/09 03:30:17  joe
  129.      Initial revision
  130.  
  131.    Commands, command options, and command arguments:
  132.  
  133. `add [OPTIONS] [FILES...]'
  134.      Add a new file/directory.  See *Note Adding files::.
  135.  
  136.     `-k KFLAG'
  137.           Set keyword expansion.
  138.  
  139.     `-m MSG'
  140.           Set file description.
  141.  
  142. `admin [OPTIONS] [FILES...]'
  143.      Administration of history files in the repository.  See *Note
  144.      admin::.
  145.  
  146.     `-b[REV]'
  147.           Set default branch.  See *Note Reverting local changes::.
  148.  
  149.     `-cSTRING'
  150.           Set comment leader.
  151.  
  152.     `-kSUBST'
  153.           Set keyword substitution.  See *Note Keyword substitution::.
  154.  
  155.     `-l[REV]'
  156.           Lock revision REV, or latest revision.
  157.  
  158.     `-mREV:MSG'
  159.           Replace the log message of revision REV with MSG.
  160.  
  161.     `-oRANGE'
  162.           Delete revisions from the repository.  See *Note admin
  163.           options::.
  164.  
  165.     `-q'
  166.           Run quietly; do not print diagnostics.
  167.  
  168.     `-sSTATE[:REV]'
  169.           Set the state.
  170.  
  171.     `-t'
  172.           Set file description from standard input.
  173.  
  174.     `-tFILE'
  175.           Set file description from FILE.
  176.  
  177.     `-t-STRING'
  178.           Set file description to STRING.
  179.  
  180.     `-u[REV]'
  181.           Unlock revision REV, or latest revision.
  182.  
  183. `annotate [OPTIONS] [FILES...]'
  184.      Show last revision where each line was modified.  See *Note
  185.      annotate::.
  186.  
  187.     `-D DATE'
  188.           Annotate the most recent revision no later than DATE.  See
  189.           *Note Common options::.
  190.  
  191.     `-f'
  192.           Use head revision if tag/date not found.  See *Note Common
  193.           options::.
  194.  
  195.     `-l'
  196.           Local; run only in current working directory.  *Note
  197.           Recursive behavior::.
  198.  
  199.     `-R'
  200.           Operate recursively (default).  *Note Recursive behavior::.
  201.  
  202.     `-r TAG'
  203.           Annotate revision TAG.  See *Note Common options::.
  204.  
  205. `checkout [OPTIONS] MODULES...'
  206.      Get a copy of the sources.  See *Note checkout::.
  207.  
  208.     `-A'
  209.           Reset any sticky tags/date/options.  See *Note Sticky tags::
  210.           and *Note Keyword substitution::.
  211.  
  212.     `-c'
  213.           Output the module database.  See *Note checkout options::.
  214.  
  215.     `-D DATE'
  216.           Check out revisions as of DATE (is sticky).  See *Note Common
  217.           options::.
  218.  
  219.     `-d DIR'
  220.           Check out into DIR.  See *Note checkout options::.
  221.  
  222.     `-f'
  223.           Use head revision if tag/date not found.  See *Note Common
  224.           options::.
  225.  
  226.     `-j REV'
  227.           Merge in changes.  See *Note checkout options::.
  228.  
  229.     `-k KFLAG'
  230.           Use KFLAG keyword expansion.  See *Note Substitution modes::.
  231.  
  232.     `-l'
  233.           Local; run only in current working directory.  *Note
  234.           Recursive behavior::.
  235.  
  236.     `-N'
  237.           Don't "shorten" module paths if -d specified.  See *Note
  238.           checkout options::.
  239.  
  240.     `-n'
  241.           Do not run module program (if any).  See *Note checkout
  242.           options::.
  243.  
  244.     `-P'
  245.           Prune empty directories.  See *Note Moving directories::.
  246.  
  247.     `-p'
  248.           Check out files to standard output (avoids stickiness).  See
  249.           *Note checkout options::.
  250.  
  251.     `-R'
  252.           Operate recursively (default).  *Note Recursive behavior::.
  253.  
  254.     `-r TAG'
  255.           Checkout revision TAG (is sticky).  See *Note Common
  256.           options::.
  257.  
  258.     `-s'
  259.           Like -c, but include module status.  See *Note checkout
  260.           options::.
  261.  
  262. `commit [OPTIONS] [FILES...]'
  263.      Check changes into the repository.  See *Note commit::.
  264.  
  265.     `-F FILE'
  266.           Read log message from FILE.  See *Note commit options::.
  267.  
  268.     `-f'
  269.           Force the file to be committed; disables recursion.  See
  270.           *Note commit options::.
  271.  
  272.     `-l'
  273.           Local; run only in current working directory.  See *Note
  274.           Recursive behavior::.
  275.  
  276.     `-m MSG'
  277.           Use MSG as log message.  See *Note commit options::.
  278.  
  279.     `-n'
  280.           Do not run module program (if any).  See *Note commit
  281.           options::.
  282.  
  283.     `-R'
  284.           Operate recursively (default).  *Note Recursive behavior::.
  285.  
  286.     `-r REV'
  287.           Commit to REV.  See *Note commit options::.
  288.  
  289. `diff [OPTIONS] [FILES...]'
  290.      Show differences between revisions.  See *Note diff::.  In
  291.      addition to the options shown below, accepts a wide variety of
  292.      options to control output style, for example `-c' for context
  293.      diffs.
  294.  
  295.     `-D DATE1'
  296.           Diff revision for date against working file.  See *Note diff
  297.           options::.
  298.  
  299.     `-D DATE2'
  300.           Diff REV1/DATE1 against DATE2.  See *Note diff options::.
  301.  
  302.     `-l'
  303.           Local; run only in current working directory.  See *Note
  304.           Recursive behavior::.
  305.  
  306.     `-N'
  307.           Include diffs for added and removed files.  See *Note diff
  308.           options::.
  309.  
  310.     `-R'
  311.           Operate recursively (default).  *Note Recursive behavior::.
  312.  
  313.     `-r REV1'
  314.           Diff revision for REV1 against working file.  See *Note diff
  315.           options::.
  316.  
  317.     `-r REV2'
  318.           Diff REV1/DATE1 against REV2.  See *Note diff options::.
  319.  
  320. `edit [OPTIONS] [FILES...]'
  321.      Get ready to edit a watched file.  See *Note Editing files::.
  322.  
  323.     `-a ACTIONS'
  324.           Specify actions for temporary watch, where ACTIONS is `edit',
  325.           `unedit', `commit', `all', or `none'.  See *Note Editing
  326.           files::.
  327.  
  328.     `-l'
  329.           Local; run only in current working directory.  See *Note
  330.           Recursive behavior::.
  331.  
  332.     `-R'
  333.           Operate recursively (default).  *Note Recursive behavior::.
  334.  
  335. `editors [OPTIONS] [FILES...]'
  336.      See who is editing a watched file.  See *Note Watch information::.
  337.  
  338.     `-l'
  339.           Local; run only in current working directory.  See *Note
  340.           Recursive behavior::.
  341.  
  342.     `-R'
  343.           Operate recursively (default).  *Note Recursive behavior::.
  344.  
  345. `export [OPTIONS] MODULES...'
  346.      Export files from CVS.  See *Note export::.
  347.  
  348.     `-D DATE'
  349.           Check out revisions as of DATE.  See *Note Common options::.
  350.  
  351.     `-d DIR'
  352.           Check out into DIR.  See *Note export options::.
  353.  
  354.     `-f'
  355.           Use head revision if tag/date not found.  See *Note Common
  356.           options::.
  357.  
  358.     `-k KFLAG'
  359.           Use KFLAG keyword expansion.  See *Note Substitution modes::.
  360.  
  361.     `-l'
  362.           Local; run only in current working directory.  *Note
  363.           Recursive behavior::.
  364.  
  365.     `-N'
  366.           Don't "shorten" module paths if -d specified.  See *Note
  367.           export options::.
  368.  
  369.     `-n'
  370.           Do not run module program (if any).  See *Note export
  371.           options::.
  372.  
  373.     `-P'
  374.           Prune empty directories.  See *Note Moving directories::.
  375.  
  376.     `-R'
  377.           Operate recursively (default).  *Note Recursive behavior::.
  378.  
  379.     `-r TAG'
  380.           Checkout revision TAG.  See *Note Common options::.
  381.  
  382. `history [OPTIONS] [FILES...]'
  383.      Show repository access history.  See *Note history::.
  384.  
  385.     `-a'
  386.           All users (default is self).  See *Note history options::.
  387.  
  388.     `-b STR'
  389.           Back to record with STR in module/file/repos field.  See
  390.           *Note history options::.
  391.  
  392.     `-c'
  393.           Report on committed (modified) files.  See *Note history
  394.           options::.
  395.  
  396.     `-D DATE'
  397.           Since DATE.  See *Note history options::.
  398.  
  399.     `-e'
  400.           Report on all record types.  See *Note history options::.
  401.  
  402.     `-l'
  403.           Last modified (committed or modified report).  See *Note
  404.           history options::.
  405.  
  406.     `-m MODULE'
  407.           Report on MODULE (repeatable).  See *Note history options::.
  408.  
  409.     `-n MODULE'
  410.           In MODULE.  See *Note history options::.
  411.  
  412.     `-o'
  413.           Report on checked out modules.  See *Note history options::.
  414.  
  415.     `-r REV'
  416.           Since revision REV.  See *Note history options::.
  417.  
  418.     `-T'
  419.           Produce report on all TAGs.  See *Note history options::.
  420.  
  421.     `-t TAG'
  422.           Since tag record placed in history file (by anyone).  See
  423.           *Note history options::.
  424.  
  425.     `-u USER'
  426.           For user USER (repeatable).  See *Note history options::.
  427.  
  428.     `-w'
  429.           Working directory must match.  See *Note history options::.
  430.  
  431.     `-x TYPES'
  432.           Report on TYPES, one or more of `TOEFWUCGMAR'.  See *Note
  433.           history options::.
  434.  
  435.     `-z ZONE'
  436.           Output for time zone ZONE.  See *Note history options::.
  437.  
  438. `import [OPTIONS] REPOSITORY VENDOR-TAG RELEASE-TAGS...'
  439.      Import files into CVS, using vendor branches.  See *Note import::.
  440.  
  441.     `-b BRA'
  442.           Import to vendor branch BRA.  See *Note Multiple vendor
  443.           branches::.
  444.  
  445.     `-d'
  446.           Use the file's modification time as the time of import.  See
  447.           *Note import options::.
  448.  
  449.     `-k KFLAG'
  450.           Set default keyword substitution mode.  See *Note import
  451.           options::.
  452.  
  453.     `-m MSG'
  454.           Use MSG for log message.  See *Note import options::.
  455.  
  456.     `-I IGN'
  457.           More files to ignore (! to reset).  See *Note import
  458.           options::.
  459.  
  460.     `-W SPEC'
  461.           More wrappers.  See *Note import options::.
  462.  
  463. `init'
  464.      Create a CVS repository if it doesn't exist.  See *Note Creating a
  465.      repository::.
  466.  
  467. `log [OPTIONS] [FILES...]'
  468.      Print out history information for files.  See *Note log::.
  469.  
  470.     `-b'
  471.           Only list revisions on the default branch.  See *Note log
  472.           options::.
  473.  
  474.     `-d DATES'
  475.           Specify dates (D1<D2 for range, D for latest before).  See
  476.           *Note log options::.
  477.  
  478.     `-h'
  479.           Only print header.  See *Note log options::.
  480.  
  481.     `-l'
  482.           Local; run only in current working directory.  See *Note
  483.           Recursive behavior::.
  484.  
  485.     `-N'
  486.           Do not list tags.  See *Note log options::.
  487.  
  488.     `-R'
  489.           Only print name of RCS file.  See *Note log options::.
  490.  
  491.     `-rREVS'
  492.           Only list revisions REVS.  See *Note log options::.
  493.  
  494.     `-s STATES'
  495.           Only list revisions with specified states.  See *Note log
  496.           options::.
  497.  
  498.     `-t'
  499.           Only print header and descriptive text.  See *Note log
  500.           options::.
  501.  
  502.     `-wLOGINS'
  503.           Only list revisions checked in by specified logins.  See
  504.           *Note log options::.
  505.  
  506. `login'
  507.      Prompt for password for authenticating server.  See *Note Password
  508.      authentication client::.
  509.  
  510. `logout'
  511.      Remove stored password for authenticating server.  See *Note
  512.      Password authentication client::.
  513.  
  514. `rdiff [OPTIONS] MODULES...'
  515.      Show differences between releases.  See *Note rdiff::.
  516.  
  517.     `-c'
  518.           Context diff output format (default).  See *Note rdiff
  519.           options::.
  520.  
  521.     `-D DATE'
  522.           Select revisions based on DATE.  See *Note Common options::.
  523.  
  524.     `-f'
  525.           Use head revision if tag/date not found.  See *Note Common
  526.           options::.
  527.  
  528.     `-l'
  529.           Local; run only in current working directory.  See *Note
  530.           Recursive behavior::.
  531.  
  532.     `-R'
  533.           Operate recursively (default).  *Note Recursive behavior::.
  534.  
  535.     `-r REV'
  536.           Select revisions based on REV.  See *Note Common options::.
  537.  
  538.     `-s'
  539.           Short patch - one liner per file.  See *Note rdiff options::.
  540.  
  541.     `-t'
  542.           Top two diffs - last change made to the file.  See *Note diff
  543.           options::.
  544.  
  545.     `-u'
  546.           Unidiff output format.  See *Note rdiff options::.
  547.  
  548.     `-V VERS'
  549.           Use RCS Version VERS for keyword expansion (obsolete).  See
  550.           *Note rdiff options::.
  551.  
  552. `release [OPTIONS] DIRECTORY'
  553.      Indicate that a directory is no longer in use.  See *Note
  554.      release::.
  555.  
  556.     `-d'
  557.           Delete the given directory.  See *Note release options::.
  558.  
  559. `remove [OPTIONS] [FILES...]'
  560.      Remove an entry from the repository.  See *Note Removing files::.
  561.  
  562.     `-f'
  563.           Delete the file before removing it.  See *Note Removing
  564.           files::.
  565.  
  566.     `-l'
  567.           Local; run only in current working directory.  See *Note
  568.           Recursive behavior::.
  569.  
  570.     `-R'
  571.           Operate recursively (default).  *Note Recursive behavior::.
  572.  
  573. `rtag [OPTIONS] TAG MODULES...'
  574.      Add a symbolic tag to a module.  See *Note Revisions:: and *Note
  575.      Branching and merging::.
  576.  
  577.     `-a'
  578.           Clear tag from removed files that would not otherwise be
  579.           tagged.  See *Note Tagging add/remove::.
  580.  
  581.     `-b'
  582.           Create a branch named TAG.  See *Note Branching and merging::.
  583.  
  584.     `-D DATE'
  585.           Tag revisions as of DATE.  See *Note Tagging by date/tag::.
  586.  
  587.     `-d'
  588.           Delete TAG.  See *Note Modifying tags::.
  589.  
  590.     `-F'
  591.           Move TAG if it already exists.  See *Note Modifying tags::.
  592.  
  593.     `-f'
  594.           Force a head revision match if tag/date not found.  See *Note
  595.           Tagging by date/tag::.
  596.  
  597.     `-l'
  598.           Local; run only in current working directory.  See *Note
  599.           Recursive behavior::.
  600.  
  601.     `-n'
  602.           No execution of tag program.  See *Note Common options::.
  603.  
  604.     `-R'
  605.           Operate recursively (default).  *Note Recursive behavior::.
  606.  
  607.     `-r REV'
  608.           Tag existing tag REV.  See *Note Tagging by date/tag::.
  609.  
  610. `status [OPTIONS] FILES...'
  611.      Display status information in a working directory.  See *Note File
  612.      status::.
  613.  
  614.     `-l'
  615.           Local; run only in current working directory.  See *Note
  616.           Recursive behavior::.
  617.  
  618.     `-R'
  619.           Operate recursively (default).  *Note Recursive behavior::.
  620.  
  621.     `-v'
  622.           Include tag information for file.  See *Note Tags::.
  623.  
  624. `tag [OPTIONS] TAG [FILES...]'
  625.      Add a symbolic tag to checked out version of files.  See *Note
  626.      Revisions:: and *Note Branching and merging::.
  627.  
  628.     `-b'
  629.           Create a branch named TAG.  See *Note Branching and merging::.
  630.  
  631.     `-c'
  632.           Check that working files are unmodified.  See *Note Tagging
  633.           the working directory::.
  634.  
  635.     `-D DATE'
  636.           Tag revisions as of DATE.  See *Note Tagging by date/tag::.
  637.  
  638.     `-d'
  639.           Delete TAG.  See *Note Modifying tags::.
  640.  
  641.     `-F'
  642.           Move TAG if it already exists.  See *Note Modifying tags::.
  643.  
  644.     `-f'
  645.           Force a head revision match if tag/date not found.  See *Note
  646.           Tagging by date/tag::.
  647.  
  648.     `-l'
  649.           Local; run only in current working directory.  See *Note
  650.           Recursive behavior::.
  651.  
  652.     `-R'
  653.           Operate recursively (default).  *Note Recursive behavior::.
  654.  
  655.     `-r REV'
  656.           Tag existing tag REV.  See *Note Tagging by date/tag::.
  657.  
  658. `unedit [OPTIONS] [FILES...]'
  659.      Undo an edit command.  See *Note Editing files::.
  660.  
  661.     `-a ACTIONS'
  662.           Specify actions for temporary watch, where ACTIONS is `edit',
  663.           `unedit', `commit', `all', or `none'.  See *Note Editing
  664.           files::.
  665.  
  666.     `-l'
  667.           Local; run only in current working directory.  See *Note
  668.           Recursive behavior::.
  669.  
  670.     `-R'
  671.           Operate recursively (default).  *Note Recursive behavior::.
  672.  
  673. `update [OPTIONS] [FILES...]'
  674.      Bring work tree in sync with repository.  See *Note update::.
  675.  
  676.     `-A'
  677.           Reset any sticky tags/date/options.  See *Note Sticky tags::
  678.           and *Note Keyword substitution::.
  679.  
  680.     `-C'
  681.           Overwrite locally modified files with clean copies from the
  682.           repository (the modified file is saved in `.#FILE.REVISION',
  683.           however).
  684.  
  685.     `-D DATE'
  686.           Check out revisions as of DATE (is sticky).  See *Note Common
  687.           options::.
  688.  
  689.     `-d'
  690.           Create directories.  See *Note update options::.
  691.  
  692.     `-f'
  693.           Use head revision if tag/date not found.  See *Note Common
  694.           options::.
  695.  
  696.     `-I IGN'
  697.           More files to ignore (! to reset).  See *Note import
  698.           options::.
  699.  
  700.     `-j REV'
  701.           Merge in changes.  See *Note update options::.
  702.  
  703.     `-k KFLAG'
  704.           Use KFLAG keyword expansion.  See *Note Substitution modes::.
  705.  
  706.     `-l'
  707.           Local; run only in current working directory.  *Note
  708.           Recursive behavior::.
  709.  
  710.     `-P'
  711.           Prune empty directories.  See *Note Moving directories::.
  712.  
  713.     `-p'
  714.           Check out files to standard output (avoids stickiness).  See
  715.           *Note update options::.
  716.  
  717.     `-R'
  718.           Operate recursively (default).  *Note Recursive behavior::.
  719.  
  720.     `-r TAG'
  721.           Checkout revision TAG (is sticky).  See *Note Common
  722.           options::.
  723.  
  724.     `-W SPEC'
  725.           More wrappers.  See *Note import options::.
  726.  
  727. `version'
  728.      Display the version of CVS being used.  If the repository is
  729.      remote, display both the client and server versions.
  730.  
  731. `watch [on|off|add|remove] [OPTIONS] [FILES...]'
  732.      on/off: turn on/off read-only checkouts of files.  See *Note
  733.      Setting a watch::.
  734.  
  735.      add/remove: add or remove notification on actions.  See *Note
  736.      Getting Notified::.
  737.  
  738.     `-a ACTIONS'
  739.           Specify actions for temporary watch, where ACTIONS is `edit',
  740.           `unedit', `commit', `all', or `none'.  See *Note Editing
  741.           files::.
  742.  
  743.     `-l'
  744.           Local; run only in current working directory.  See *Note
  745.           Recursive behavior::.
  746.  
  747.     `-R'
  748.           Operate recursively (default).  *Note Recursive behavior::.
  749.  
  750. `watchers [OPTIONS] [FILES...]'
  751.      See who is watching a file.  See *Note Watch information::.
  752.  
  753.     `-l'
  754.           Local; run only in current working directory.  See *Note
  755.           Recursive behavior::.
  756.  
  757.     `-R'
  758.           Operate recursively (default).  *Note Recursive behavior::.
  759.  
  760. 
  761. File: cvs.info,  Node: Administrative files,  Next: Environment variables,  Prev: Invoking CVS,  Up: Top
  762.  
  763. Reference manual for Administrative files
  764. *****************************************
  765.  
  766.    Inside the repository, in the directory `$CVSROOT/CVSROOT', there
  767. are a number of supportive files for CVS.  You can use CVS in a limited
  768. fashion without any of them, but if they are set up properly they can
  769. help make life easier.  For a discussion of how to edit them, see *Note
  770. Intro administrative files::.
  771.  
  772.    The most important of these files is the `modules' file, which
  773. defines the modules inside the repository.
  774.  
  775. * Menu:
  776.  
  777. * modules::                     Defining modules
  778. * Wrappers::                    Specify binary-ness based on file name
  779. * commit files::                The commit support files
  780. * commitinfo::                  Pre-commit checking
  781. * verifymsg::                   How are log messages evaluated?
  782. * editinfo::                    Specifying how log messages are created
  783.                                 (obsolete)
  784. * loginfo::                     Where should log messages be sent?
  785. * rcsinfo::                     Templates for the log messages
  786. * cvsignore::                   Ignoring files via cvsignore
  787. * checkoutlist::                Adding your own administrative files
  788. * history file::                History information
  789. * Variables::                   Various variables are expanded
  790. * config::                      Miscellaneous CVS configuration
  791.  
  792. 
  793. File: cvs.info,  Node: modules,  Next: Wrappers,  Up: Administrative files
  794.  
  795. The modules file
  796. ================
  797.  
  798.    The `modules' file records your definitions of names for collections
  799. of source code.  CVS will use these definitions if you use CVS to
  800. update the modules file (use normal commands like `add', `commit', etc).
  801.  
  802.    The `modules' file may contain blank lines and comments (lines
  803. beginning with `#') as well as module definitions.  Long lines can be
  804. continued on the next line by specifying a backslash (`\') as the last
  805. character on the line.
  806.  
  807.    There are three basic types of modules: alias modules, regular
  808. modules, and ampersand modules.  The difference between them is the way
  809. that they map files in the repository to files in the working
  810. directory.  In all of the following examples, the top-level repository
  811. contains a directory called `first-dir', which contains two files,
  812. `file1' and `file2', and a directory `sdir'.  `first-dir/sdir' contains
  813. a file `sfile'.
  814.  
  815. * Menu:
  816.  
  817. * Alias modules::             The simplest kind of module
  818. * Regular modules::
  819. * Ampersand modules::
  820. * Excluding directories::     Excluding directories from a module
  821. * Module options::            Regular and ampersand modules can take options
  822. * Module program options::    How the modules ``program options'' programs
  823.                               are run.
  824.  
  825. 
  826. File: cvs.info,  Node: Alias modules,  Next: Regular modules,  Up: modules
  827.  
  828. Alias modules
  829. -------------
  830.  
  831.    Alias modules are the simplest kind of module:
  832.  
  833. `MNAME -a ALIASES...'
  834.      This represents the simplest way of defining a module MNAME.  The
  835.      `-a' flags the definition as a simple alias: CVS will treat any
  836.      use of MNAME (as a command argument) as if the list of names
  837.      ALIASES had been specified instead.  ALIASES may contain either
  838.      other module names or paths.  When you use paths in aliases,
  839.      `checkout' creates all intermediate directories in the working
  840.      directory, just as if the path had been specified explicitly in
  841.      the CVS arguments.
  842.  
  843.    For example, if the modules file contains:
  844.  
  845.      amodule -a first-dir
  846.  
  847. then the following two commands are equivalent:
  848.  
  849.      $ cvs co amodule
  850.      $ cvs co first-dir
  851.  
  852. and they each would provide output such as:
  853.  
  854.      cvs checkout: Updating first-dir
  855.      U first-dir/file1
  856.      U first-dir/file2
  857.      cvs checkout: Updating first-dir/sdir
  858.      U first-dir/sdir/sfile
  859.  
  860. 
  861. File: cvs.info,  Node: Regular modules,  Next: Ampersand modules,  Prev: Alias modules,  Up: modules
  862.  
  863. Regular modules
  864. ---------------
  865.  
  866. `MNAME [ options ] DIR [ FILES... ]'
  867.      In the simplest case, this form of module definition reduces to
  868.      `MNAME DIR'.  This defines all the files in directory DIR as
  869.      module mname.  DIR is a relative path (from `$CVSROOT') to a
  870.      directory of source in the source repository.  In this case, on
  871.      checkout, a single directory called MNAME is created as a working
  872.      directory; no intermediate directory levels are used by default,
  873.      even if DIR was a path involving several directory levels.
  874.  
  875.    For example, if a module is defined by:
  876.  
  877.      regmodule first-dir
  878.  
  879. then regmodule will contain the files from first-dir:
  880.  
  881.      $ cvs co regmodule
  882.      cvs checkout: Updating regmodule
  883.      U regmodule/file1
  884.      U regmodule/file2
  885.      cvs checkout: Updating regmodule/sdir
  886.      U regmodule/sdir/sfile
  887.      $
  888.  
  889.    By explicitly specifying files in the module definition after DIR,
  890. you can select particular files from directory DIR.  Here is an example:
  891.  
  892.      regfiles first-dir/sdir sfile
  893.  
  894. With this definition, getting the regfiles module will create a single
  895. working directory `regfiles' containing the file listed, which comes
  896. from a directory deeper in the CVS source repository:
  897.  
  898.      $ cvs co regfiles
  899.      U regfiles/sfile
  900.      $
  901.  
  902. 
  903. File: cvs.info,  Node: Ampersand modules,  Next: Excluding directories,  Prev: Regular modules,  Up: modules
  904.  
  905. Ampersand modules
  906. -----------------
  907.  
  908.    A module definition can refer to other modules by including
  909. `&MODULE' in its definition.
  910.      MNAME [ options ] &MODULE...
  911.  
  912.    Then getting the module creates a subdirectory for each such module,
  913. in the directory containing the module.  For example, if modules
  914. contains
  915.  
  916.      ampermod &first-dir
  917.  
  918.    then a checkout will create an `ampermod' directory which contains a
  919. directory called `first-dir', which in turns contains all the
  920. directories and files which live there.  For example, the command
  921.  
  922.      $ cvs co ampermod
  923.  
  924. will create the following files:
  925.  
  926.      ampermod/first-dir/file1
  927.      ampermod/first-dir/file2
  928.      ampermod/first-dir/sdir/sfile
  929.  
  930.    There is one quirk/bug: the messages that CVS prints omit the
  931. `ampermod', and thus do not correctly display the location to which it
  932. is checking out the files:
  933.  
  934.      $ cvs co ampermod
  935.      cvs checkout: Updating first-dir
  936.      U first-dir/file1
  937.      U first-dir/file2
  938.      cvs checkout: Updating first-dir/sdir
  939.      U first-dir/sdir/sfile
  940.      $
  941.  
  942.    Do not rely on this buggy behavior; it may get fixed in a future
  943. release of CVS.
  944.  
  945. 
  946. File: cvs.info,  Node: Excluding directories,  Next: Module options,  Prev: Ampersand modules,  Up: modules
  947.  
  948. Excluding directories
  949. ---------------------
  950.  
  951.    An alias module may exclude particular directories from other
  952. modules by using an exclamation mark (`!') before the name of each
  953. directory to be excluded.
  954.  
  955.    For example, if the modules file contains:
  956.  
  957.      exmodule -a !first-dir/sdir first-dir
  958.  
  959.    then checking out the module `exmodule' will check out everything in
  960. `first-dir' except any files in the subdirectory `first-dir/sdir'.
  961.  
  962. 
  963. File: cvs.info,  Node: Module options,  Next: Module program options,  Prev: Excluding directories,  Up: modules
  964.  
  965. Module options
  966. --------------
  967.  
  968.    Either regular modules or ampersand modules can contain options,
  969. which supply additional information concerning the module.
  970.  
  971. `-d NAME'
  972.      Name the working directory something other than the module name.
  973.  
  974. `-e PROG'
  975.      Specify a program PROG to run whenever files in a module are
  976.      exported.  PROG runs with a single argument, the module name.
  977.  
  978. `-i PROG'
  979.      Specify a program PROG to run whenever files in a module are
  980.      committed.  PROG runs with a single argument, the full pathname of
  981.      the affected directory in a source repository.  The `commitinfo',
  982.      `loginfo', and `verifymsg' files provide other ways to call a
  983.      program on commit.
  984.  
  985. `-o PROG'
  986.      Specify a program PROG to run whenever files in a module are
  987.      checked out.  PROG runs with a single argument, the module name.
  988.  
  989. `-s STATUS'
  990.      Assign a status to the module.  When the module file is printed
  991.      with `cvs checkout -s' the modules are sorted according to
  992.      primarily module status, and secondarily according to the module
  993.      name.  This option has no other meaning.  You can use this option
  994.      for several things besides status: for instance, list the person
  995.      that is responsible for this module.
  996.  
  997. `-t PROG'
  998.      Specify a program PROG to run whenever files in a module are
  999.      tagged with `rtag'.  PROG runs with two arguments: the module name
  1000.      and the symbolic tag specified to `rtag'.  It is not run when
  1001.      `tag' is executed.  Generally you will find that taginfo is a
  1002.      better solution (*note user-defined logging::).
  1003.  
  1004. `-u PROG'
  1005.      Specify a program PROG to run whenever `cvs update' is executed
  1006.      from the top-level directory of the checked-out module.  PROG runs
  1007.      with a single argument, the full path to the source repository for
  1008.      this module.
  1009.  
  1010.    You should also see *note Module program options:: about how the
  1011. "program options" programs are run.
  1012.  
  1013. 
  1014. File: cvs.info,  Node: Module program options,  Prev: Module options,  Up: modules
  1015.  
  1016. How the modules file "program options" programs are run
  1017. -------------------------------------------------------
  1018.  
  1019. For checkout, rtag, and export, the program is server-based, and as
  1020. such the following applies:-
  1021.  
  1022.    If using remote access methods (pserver, ext, etc.), CVS will
  1023. execute this program on the server from a temporary directory. The path
  1024. is searched for this program.
  1025.  
  1026.    If using "local access" (on a local or remote NFS filesystem, i.e.
  1027. repository set just to a path), the program will be executed from the
  1028. newly checked-out tree, if found there, or alternatively searched for
  1029. in the path if not.
  1030.  
  1031. The commit and update programs are locally-based, and are run as
  1032. follows:-
  1033.  
  1034.    The program is always run locally. One must re-checkout the tree one
  1035. is using if these options are updated in the modules administrative
  1036. file. The file CVS/Checkin.prog contains the value of the option `-i'
  1037. set in the modules file, and similarly for the file CVS/Update.prog and
  1038. `-u'. The program is always executed from the top level of the
  1039. checked-out copy on the client. Again, the program is first searched
  1040. for in the checked-out copy and then using the path.
  1041.  
  1042.    The programs are all run after the operation has effectively
  1043. completed.
  1044.  
  1045. 
  1046. File: cvs.info,  Node: Wrappers,  Next: commit files,  Prev: modules,  Up: Administrative files
  1047.  
  1048. The cvswrappers file
  1049. ====================
  1050.  
  1051.    Wrappers refers to a CVS feature which lets you control certain
  1052. settings based on the name of the file which is being operated on.  The
  1053. settings are `-k' for binary files, and `-m' for nonmergeable text
  1054. files.
  1055.  
  1056.    The `-m' option specifies the merge methodology that should be used
  1057. when a non-binary file is updated.  `MERGE' means the usual CVS
  1058. behavior: try to merge the files.  `COPY' means that `cvs update' will
  1059. refuse to merge files, as it also does for files specified as binary
  1060. with `-kb' (but if the file is specified as binary, there is no need to
  1061. specify `-m 'COPY'').  CVS will provide the user with the two versions
  1062. of the files, and require the user using mechanisms outside CVS, to
  1063. insert any necessary changes.  *WARNING*: do not use `COPY' with CVS
  1064. 1.9 or earlier-such versions of CVS will copy one version of your file
  1065. over the other, wiping out the previous contents.  The `-m' wrapper
  1066. option only affects behavior when merging is done on update; it does
  1067. not affect how files are stored.  See *Note Binary files::, for more on
  1068. binary files.
  1069.  
  1070.    The basic format of the file `cvswrappers' is:
  1071.  
  1072.      wildcard     [option value][option value]...
  1073.      
  1074.      where option is one of
  1075.      -m           update methodology      value: MERGE or COPY
  1076.      -k           keyword expansion       value: expansion mode
  1077.      
  1078.      and value is a single-quote delimited value.
  1079.  
  1080.    For example, the following command imports a directory, treating
  1081. files whose name ends in `.exe' as binary:
  1082.  
  1083.      cvs import -I ! -W "*.exe -k 'b'" first-dir vendortag reltag
  1084.  
  1085. 
  1086. File: cvs.info,  Node: commit files,  Next: commitinfo,  Prev: Wrappers,  Up: Administrative files
  1087.  
  1088. The commit support files
  1089. ========================
  1090.  
  1091.    The `-i' flag in the `modules' file can be used to run a certain
  1092. program whenever files are committed (*note modules::).  The files
  1093. described in this section provide other, more flexible, ways to run
  1094. programs whenever something is committed.
  1095.  
  1096.    There are three kind of programs that can be run on commit.  They
  1097. are specified in files in the repository, as described below.  The
  1098. following table summarizes the file names and the purpose of the
  1099. corresponding programs.
  1100.  
  1101. `commitinfo'
  1102.      The program is responsible for checking that the commit is
  1103.      allowed.  If it exits with a non-zero exit status the commit will
  1104.      be aborted.
  1105.  
  1106. `verifymsg'
  1107.      The specified program is used to evaluate the log message, and
  1108.      possibly verify that it contains all required fields.  This is
  1109.      most useful in combination with the `rcsinfo' file, which can hold
  1110.      a log message template (*note rcsinfo::).
  1111.  
  1112. `editinfo'
  1113.      The specified program is used to edit the log message, and
  1114.      possibly verify that it contains all required fields.  This is
  1115.      most useful in combination with the `rcsinfo' file, which can hold
  1116.      a log message template (*note rcsinfo::).  (obsolete)
  1117.  
  1118. `loginfo'
  1119.      The specified program is called when the commit is complete.  It
  1120.      receives the log message and some additional information and can
  1121.      store the log message in a file, or mail it to appropriate
  1122.      persons, or maybe post it to a local newsgroup, or...  Your
  1123.      imagination is the limit!
  1124.  
  1125. * Menu:
  1126.  
  1127. * syntax::                      The common syntax
  1128.  
  1129. 
  1130. File: cvs.info,  Node: syntax,  Up: commit files
  1131.  
  1132. The common syntax
  1133. -----------------
  1134.  
  1135.    The administrative files such as `commitinfo', `loginfo', `rcsinfo',
  1136. `verifymsg', etc., all have a common format.  The purpose of the files
  1137. are described later on.  The common syntax is described here.
  1138.  
  1139.    Each line contains the following:
  1140.    * A regular expression.  This is a basic regular expression in the
  1141.      syntax used by GNU emacs.
  1142.  
  1143.    * A whitespace separator--one or more spaces and/or tabs.
  1144.  
  1145.    * A file name or command-line template.
  1146.  
  1147. Blank lines are ignored.  Lines that start with the character `#' are
  1148. treated as comments.  Long lines unfortunately can _not_ be broken in
  1149. two parts in any way.
  1150.  
  1151.    The first regular expression that matches the current directory name
  1152. in the repository is used.  The rest of the line is used as a file name
  1153. or command-line as appropriate.
  1154.  
  1155. 
  1156. File: cvs.info,  Node: commitinfo,  Next: verifymsg,  Prev: commit files,  Up: Administrative files
  1157.  
  1158. Commitinfo
  1159. ==========
  1160.  
  1161.    The `commitinfo' file defines programs to execute whenever `cvs
  1162. commit' is about to execute.  These programs are used for pre-commit
  1163. checking to verify that the modified, added and removed files are really
  1164. ready to be committed.  This could be used, for instance, to verify
  1165. that the changed files conform to to your site's standards for coding
  1166. practice.
  1167.  
  1168.    As mentioned earlier, each line in the `commitinfo' file consists of
  1169. a regular expression and a command-line template.  The template can
  1170. include a program name and any number of arguments you wish to supply
  1171. to it.  The full path to the current source repository is appended to
  1172. the template, followed by the file names of any files involved in the
  1173. commit (added, removed, and modified files).
  1174.  
  1175.    The first line with a regular expression matching the directory
  1176. within the repository will be used.  If the command returns a non-zero
  1177. exit status the commit will be aborted.
  1178.  
  1179.    If the repository name does not match any of the regular expressions
  1180. in this file, the `DEFAULT' line is used, if it is specified.
  1181.  
  1182.    All occurrences of the name `ALL' appearing as a regular expression
  1183. are used in addition to the first matching regular expression or the
  1184. name `DEFAULT'.
  1185.  
  1186.    Note: when CVS is accessing a remote repository, `commitinfo' will
  1187. be run on the _remote_ (i.e., server) side, not the client side (*note
  1188. Remote repositories::).
  1189.  
  1190. 
  1191. File: cvs.info,  Node: verifymsg,  Next: editinfo,  Prev: commitinfo,  Up: Administrative files
  1192.  
  1193. Verifying log messages
  1194. ======================
  1195.  
  1196.    Once you have entered a log message, you can evaluate that message
  1197. to check for specific content, such as a bug ID.  Use the `verifymsg'
  1198. file to specify a program that is used to verify the log message.  This
  1199. program could be a simple script that checks that the entered message
  1200. contains the required fields.
  1201.  
  1202.    The `verifymsg' file is often most useful together with the
  1203. `rcsinfo' file, which can be used to specify a log message template.
  1204.  
  1205.    Each line in the `verifymsg' file consists of a regular expression
  1206. and a command-line template.  The template must include a program name,
  1207. and can include any number of arguments.  The full path to the current
  1208. log message template file is appended to the template.
  1209.  
  1210.    One thing that should be noted is that the `ALL' keyword is not
  1211. supported.  If more than one matching line is found, the first one is
  1212. used.  This can be useful for specifying a default verification script
  1213. in a directory, and then overriding it in a subdirectory.
  1214.  
  1215.    If the repository name does not match any of the regular expressions
  1216. in this file, the `DEFAULT' line is used, if it is specified.
  1217.  
  1218.    If the verification script exits with a non-zero exit status, the
  1219. commit is aborted.
  1220.  
  1221.    Note that the verification script cannot change the log message; it
  1222. can merely accept it or reject it.
  1223.  
  1224.    The following is a little silly example of a `verifymsg' file,
  1225. together with the corresponding `rcsinfo' file, the log message
  1226. template and an verification  script.  We begin with the log message
  1227. template.  We want to always record a bug-id number on the first line
  1228. of the log message.  The rest of log message is free text.  The
  1229. following template is found in the file `/usr/cvssupport/tc.template'.
  1230.  
  1231.      BugId:
  1232.  
  1233.    The script `/usr/cvssupport/bugid.verify' is used to evaluate the
  1234. log message.
  1235.  
  1236.      #!/bin/sh
  1237.      #
  1238.      #       bugid.verify filename
  1239.      #
  1240.      #  Verify that the log message contains a valid bugid
  1241.      #  on the first line.
  1242.      #
  1243.      if head -1 < $1 | grep '^BugId:[ ]*[0-9][0-9]*$' > /dev/null; then
  1244.          exit 0
  1245.      else
  1246.          echo "No BugId found."
  1247.          exit 1
  1248.      fi
  1249.  
  1250.    The `verifymsg' file contains this line:
  1251.  
  1252.      ^tc     /usr/cvssupport/bugid.verify
  1253.  
  1254.    The `rcsinfo' file contains this line:
  1255.  
  1256.      ^tc     /usr/cvssupport/tc.template
  1257.  
  1258. 
  1259. File: cvs.info,  Node: editinfo,  Next: loginfo,  Prev: verifymsg,  Up: Administrative files
  1260.  
  1261. Editinfo
  1262. ========
  1263.  
  1264.    _NOTE:_ The `editinfo' feature has been rendered obsolete.  To set a
  1265. default editor for log messages use the `EDITOR' environment variable
  1266. (*note Environment variables::) or the `-e' global option (*note Global
  1267. options::).  See *Note verifymsg::, for information on the use of the
  1268. `verifymsg' feature for evaluating log messages.
  1269.  
  1270.    If you want to make sure that all log messages look the same way,
  1271. you can use the `editinfo' file to specify a program that is used to
  1272. edit the log message.  This program could be a custom-made editor that
  1273. always enforces a certain style of the log message, or maybe a simple
  1274. shell script that calls an editor, and checks that the entered message
  1275. contains the required fields.
  1276.  
  1277.    If no matching line is found in the `editinfo' file, the editor
  1278. specified in the environment variable `$CVSEDITOR' is used instead.  If
  1279. that variable is not set, then the environment variable `$EDITOR' is
  1280. used instead.  If that variable is not set a default will be used.  See
  1281. *Note Committing your changes::.
  1282.  
  1283.    The `editinfo' file is often most useful together with the `rcsinfo'
  1284. file, which can be used to specify a log message template.
  1285.  
  1286.    Each line in the `editinfo' file consists of a regular expression
  1287. and a command-line template.  The template must include a program name,
  1288. and can include any number of arguments.  The full path to the current
  1289. log message template file is appended to the template.
  1290.  
  1291.    One thing that should be noted is that the `ALL' keyword is not
  1292. supported.  If more than one matching line is found, the first one is
  1293. used.  This can be useful for specifying a default edit script in a
  1294. module, and then overriding it in a subdirectory.
  1295.  
  1296.    If the repository name does not match any of the regular expressions
  1297. in this file, the `DEFAULT' line is used, if it is specified.
  1298.  
  1299.    If the edit script exits with a non-zero exit status, the commit is
  1300. aborted.
  1301.  
  1302.    Note: when CVS is accessing a remote repository, or when the `-m' or
  1303. `-F' options to `cvs commit' are used, `editinfo' will not be consulted.
  1304. There is no good workaround for this; use `verifymsg' instead.
  1305.  
  1306. * Menu:
  1307.  
  1308. * editinfo example::            Editinfo example
  1309.  
  1310. 
  1311. File: cvs.info,  Node: editinfo example,  Up: editinfo
  1312.  
  1313. Editinfo example
  1314. ----------------
  1315.  
  1316.    The following is a little silly example of a `editinfo' file,
  1317. together with the corresponding `rcsinfo' file, the log message
  1318. template and an editor script.  We begin with the log message template.
  1319. We want to always record a bug-id number on the first line of the log
  1320. message.  The rest of log message is free text.  The following template
  1321. is found in the file `/usr/cvssupport/tc.template'.
  1322.  
  1323.      BugId:
  1324.  
  1325.    The script `/usr/cvssupport/bugid.edit' is used to edit the log
  1326. message.
  1327.  
  1328.      #!/bin/sh
  1329.      #
  1330.      #       bugid.edit filename
  1331.      #
  1332.      #  Call $EDITOR on FILENAME, and verify that the
  1333.      #  resulting file contains a valid bugid on the first
  1334.      #  line.
  1335.      if [ "x$EDITOR" = "x" ]; then EDITOR=vi; fi
  1336.      if [ "x$CVSEDITOR" = "x" ]; then CVSEDITOR=$EDITOR; fi
  1337.      $CVSEDITOR $1
  1338.      until head -1|grep '^BugId:[ ]*[0-9][0-9]*$' < $1
  1339.      do  echo -n  "No BugId found.  Edit again? ([y]/n)"
  1340.          read ans
  1341.          case ${ans} in
  1342.              n*) exit 1;;
  1343.          esac
  1344.          $CVSEDITOR $1
  1345.      done
  1346.  
  1347.    The `editinfo' file contains this line:
  1348.  
  1349.      ^tc     /usr/cvssupport/bugid.edit
  1350.  
  1351.    The `rcsinfo' file contains this line:
  1352.  
  1353.      ^tc     /usr/cvssupport/tc.template
  1354.  
  1355. 
  1356. File: cvs.info,  Node: loginfo,  Next: rcsinfo,  Prev: editinfo,  Up: Administrative files
  1357.  
  1358. Loginfo
  1359. =======
  1360.  
  1361.    The `loginfo' file is used to control where `cvs commit' log
  1362. information is sent.  The first entry on a line is a regular expression
  1363. which is tested against the directory that the change is being made to,
  1364. relative to the `$CVSROOT'.  If a match is found, then the remainder of
  1365. the line is a filter program that should expect log information on its
  1366. standard input.
  1367.  
  1368.    If the repository name does not match any of the regular expressions
  1369. in this file, the `DEFAULT' line is used, if it is specified.
  1370.  
  1371.    All occurrences of the name `ALL' appearing as a regular expression
  1372. are used in addition to the first matching regular expression or
  1373. `DEFAULT'.
  1374.  
  1375.    The first matching regular expression is used.
  1376.  
  1377.    *Note commit files::, for a description of the syntax of the
  1378. `loginfo' file.
  1379.  
  1380.    The user may specify a format string as part of the filter.  The
  1381. string is composed of a `%' followed by a space, or followed by a single
  1382. format character, or followed by a set of format characters surrounded
  1383. by `{' and `}' as separators.  The format characters are:
  1384.  
  1385. s
  1386.      file name
  1387.  
  1388. V
  1389.      old version number (pre-checkin)
  1390.  
  1391. v
  1392.      new version number (post-checkin)
  1393.  
  1394.    All other characters that appear in a format string expand to an
  1395. empty field (commas separating fields are still provided).
  1396.  
  1397.    For example, some valid format strings are `%', `%s', `%{s}', and
  1398. `%{sVv}'.
  1399.  
  1400.    The output will be a string of tokens separated by spaces.  For
  1401. backwards compatibility, the first token will be the repository
  1402. subdirectory.  The rest of the tokens will be comma-delimited lists of
  1403. the information requested in the format string.  For example, if
  1404. `/u/src/master/yoyodyne/tc' is the repository, `%{sVv}' is the format
  1405. string, and three files (ChangeLog, Makefile, foo.c) were modified, the
  1406. output might be:
  1407.  
  1408.      yoyodyne/tc ChangeLog,1.1,1.2 Makefile,1.3,1.4 foo.c,1.12,1.13
  1409.  
  1410.    As another example, `%{}' means that only the name of the repository
  1411. will be generated.
  1412.  
  1413.    Note: when CVS is accessing a remote repository, `loginfo' will be
  1414. run on the _remote_ (i.e., server) side, not the client side (*note
  1415. Remote repositories::).
  1416.  
  1417. * Menu:
  1418.  
  1419. * loginfo example::             Loginfo example
  1420. * Keeping a checked out copy::  Updating a tree on every checkin
  1421.  
  1422. 
  1423. File: cvs.info,  Node: loginfo example,  Next: Keeping a checked out copy,  Up: loginfo
  1424.  
  1425. Loginfo example
  1426. ---------------
  1427.  
  1428.    The following `loginfo' file, together with the tiny shell-script
  1429. below, appends all log messages to the file
  1430. `$CVSROOT/CVSROOT/commitlog', and any commits to the administrative
  1431. files (inside the `CVSROOT' directory) are also logged in
  1432. `/usr/adm/cvsroot-log'.  Commits to the `prog1' directory are mailed to
  1433. ceder.
  1434.  
  1435.      ALL             /usr/local/bin/cvs-log $CVSROOT/CVSROOT/commitlog $USER
  1436.      ^CVSROOT        /usr/local/bin/cvs-log /usr/adm/cvsroot-log
  1437.      ^prog1          Mail -s %s ceder
  1438.  
  1439.    The shell-script `/usr/local/bin/cvs-log' looks like this:
  1440.  
  1441.      #!/bin/sh
  1442.      (echo "------------------------------------------------------";
  1443.       echo -n $2"  ";
  1444.       date;
  1445.       echo;
  1446.       cat) >> $1
  1447.  
  1448. 
  1449. File: cvs.info,  Node: Keeping a checked out copy,  Prev: loginfo example,  Up: loginfo
  1450.  
  1451. Keeping a checked out copy
  1452. --------------------------
  1453.  
  1454.    It is often useful to maintain a directory tree which contains files
  1455. which correspond to the latest version in the repository.  For example,
  1456. other developers might want to refer to the latest sources without
  1457. having to check them out, or you might be maintaining a web site with
  1458. CVS and want every checkin to cause the files used by the web server to
  1459. be updated.
  1460.  
  1461.    The way to do this is by having loginfo invoke `cvs update'.  Doing
  1462. so in the naive way will cause a problem with locks, so the `cvs update'
  1463. must be run in the background.  Here is an example for unix (this
  1464. should all be on one line):
  1465.  
  1466.      ^cyclic-pages        (date; cat; (sleep 2; cd /u/www/local-docs;
  1467.       cvs -q update -d) &) >> $CVSROOT/CVSROOT/updatelog 2>&1
  1468.  
  1469.    This will cause checkins to repository directories starting with
  1470. `cyclic-pages' to update the checked out tree in `/u/www/local-docs'.
  1471.  
  1472. 
  1473. File: cvs.info,  Node: rcsinfo,  Next: cvsignore,  Prev: loginfo,  Up: Administrative files
  1474.  
  1475. Rcsinfo
  1476. =======
  1477.  
  1478.    The `rcsinfo' file can be used to specify a form to edit when
  1479. filling out the commit log.  The `rcsinfo' file has a syntax similar to
  1480. the `verifymsg', `commitinfo' and `loginfo' files.  *Note syntax::.
  1481. Unlike the other files the second part is _not_ a command-line
  1482. template.  Instead, the part after the regular expression should be a
  1483. full pathname to a file containing the log message template.
  1484.  
  1485.    If the repository name does not match any of the regular expressions
  1486. in this file, the `DEFAULT' line is used, if it is specified.
  1487.  
  1488.    All occurrences of the name `ALL' appearing as a regular expression
  1489. are used in addition to the first matching regular expression or
  1490. `DEFAULT'.
  1491.  
  1492.    The log message template will be used as a default log message.  If
  1493. you specify a log message with `cvs commit -m MESSAGE' or `cvs commit -f
  1494. FILE' that log message will override the template.
  1495.  
  1496.    *Note verifymsg::, for an example `rcsinfo' file.
  1497.  
  1498.    When CVS is accessing a remote repository, the contents of `rcsinfo'
  1499. at the time a directory is first checked out will specify a template
  1500. which does not then change.  If you edit `rcsinfo' or its templates,
  1501. you may need to check out a new working directory.
  1502.  
  1503.